package com.etrans.web.gps.util;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class State {
	static Logger logger = LoggerFactory.getLogger(State.class);
	public static Map<Integer, String> stateMap = new HashMap<Integer, String>();	
	static {
		stateMap.put(0, "ACC开|ACC关");//第0位
		stateMap.put(1, "定位|盲区");//第1位
		stateMap.put(2, "南纬|北纬");//第2位
		stateMap.put(3, "西经|东经");//第3位
		stateMap.put(4, "停运状态|运营状态");//第4位
		stateMap.put(5, "经纬度已经保密插件加密|经纬度未经保密插件加密");//第5位
		stateMap.put(6, "车辆油路断开|车辆油路正常");//第6位
		stateMap.put(7, "车辆电路断开|车辆电路正常");//第7位
		
		stateMap.put(8, "车门加锁|车门解锁");//第8位
		stateMap.put(9, "前门开|前门关");//第9位
		stateMap.put(10, "后门开|后门关");//第10位
		stateMap.put(11, "车门开|车门关");//第11位
		stateMap.put(12, "发动机开|发动机关");//第12位
		stateMap.put(13, "空调开|空调关");//第13位
		stateMap.put(14, "刹车|未刹车");//第14位
		stateMap.put(15, "左转向灯开|左转向灯关");//第15位

		stateMap.put(16, "右转向灯开|右转向灯关");//第16位
		stateMap.put(17, "远光灯开|远光灯关");//第17位
		stateMap.put(18, "近光灯开|近光灯关");//第18位
		stateMap.put(19, "震动开|震动关");//第19位
		stateMap.put(20, "喇叭开|喇叭关");//第20位
		stateMap.put(21, "外置蜂鸣器");//第20位
		stateMap.put(22, "重车|空车");//第22位
		stateMap.put(23, "打印机连接|打印机断开");//第23位
		
		stateMap.put(24, "防雾灯开|防雾灯关");//第24位
		stateMap.put(25, "声光报警");//第25位
		stateMap.put(26, "紧急报警");//第26位
		stateMap.put(27, "超速报警");//第27位
		stateMap.put(28, "疲劳驾驶");//第28位
		stateMap.put(29, "预警");//第29位
		stateMap.put(30, "GNSS模块发生故障");//第30位
		stateMap.put(31, "GNSS天线未接或被剪断");//第31位
		
		stateMap.put(32, "GNSS天线短路");//第32位
		stateMap.put(33, "终端主电源欠压");//第33位
		stateMap.put(34, "终端主电源掉电");//第34位
		stateMap.put(35, "终端LCD或显示器故障");//第35位
		stateMap.put(36, "TTS模块故障 ");//第36位
		stateMap.put(37, "摄像头故障 ");//第37位
		stateMap.put(38, "当天累计驾驶超时");//第38位
		stateMap.put(39, "超时停车");//第39位
		
		stateMap.put(40, "进出区域");//第40位
		stateMap.put(41, "进出路线");//第41位
		stateMap.put(42, "路段行驶时间不足/过长");//第42位
		stateMap.put(43, "路线偏离报警");//第43位
		stateMap.put(44, "车辆VSS故障");//第44位
		stateMap.put(45, "车辆油量异常");//第45位
		stateMap.put(46, "车辆被盗");//第46位
		stateMap.put(47, "车辆非法点火");//第47位
		
		stateMap.put(48, "车辆非法位移");//第48位
		stateMap.put(49, "碰撞侧翻报警");//第49位
		
		stateMap.put(55, "温度报警");//第55位
		stateMap.put(56, "地理栅栏");//第56位
		stateMap.put(57, "手柄");//第57位
		stateMap.put(58, "手柄故障");//第58位
		stateMap.put(59, "CAN总线状态");//第59位
		stateMap.put(60, "485状态");//第60位
		stateMap.put(61, "省电模式");//第61位
		stateMap.put(62, "电池拆除报警");//第62位

		stateMap.put(63, "电瓶电压低报警");//第63位
		stateMap.put(64, "电池电压低报警");//第64位
		stateMap.put(65, "密码错误报警");//第65位
		stateMap.put(66, "图像采集器");//第66位
		stateMap.put(67, "越站报警");//第67位
		stateMap.put(68, "禁止打出");//第68位
		stateMap.put(69, "禁止打入");//第69位
		stateMap.put(70, "禁止通话");//第70位

		stateMap.put(71, "停车休息时间不足报警");//第71位
		stateMap.put(72, "非法停车报警");//第72位
		stateMap.put(73, "锁车电路故障");//第73位
		stateMap.put(74, "对讲机");//第74位
		stateMap.put(75, "是否定时产生");//第75位
		stateMap.put(76, "是否定距产生");//第76位
		stateMap.put(77, "转鼓1");//第77位
		stateMap.put(78, "转鼓2");//第78位

		stateMap.put(79, "空车");//第79位
		stateMap.put(80, "半载");//第80位
		stateMap.put(81, "满载");//第81位

		stateMap.put(82, "使用GPS卫星定位|未使用GPS卫星");//第82位
		stateMap.put(83, "使用北斗卫星定位|未使用北斗卫星定位");//第83位
		stateMap.put(84, "自定义1路高传感器状态为高|自定义1路高传感器状态为低");//第84位
		stateMap.put(85, "自定义2路高传感器状态为高|自定义2路高传感器状态为低");//第85位
		stateMap.put(86, "自定义1路低传感器状态为低|自定义1路高传感器状态为高");//第86位
		stateMap.put(87, "自定义2路低传感器状态为低|自定义2路高传感器状态为高");//第87位
		stateMap.put(90,"尾板关|尾板开");//第90位
	}
	/**
	 * 	解析状态字
	 * @param map      解析包
	 * @param stateStr 自定义字段
	 * @return
	 */
	public static String getState(Map<Integer, Boolean> map,String stateStr){
		String result="";
		StringBuilder s = new StringBuilder();
		String [] str = stateStr.split(",");
		for(int i=0;i<str.length;i++){
			int num = Integer.parseInt(str[i]);
			String[] re = stateMap.get(num).toString().split("\\|");
			if(num<25 || num>81){
				if(map.get(num)==null){
					continue;
				}
				if(map.get(num)){
					s.append(re[0]);
				}else{
					s.append(re[1]);
				}
			}else{
				if(map.get(num)==null){
					continue;
				}
				if(map.get(num)){
					if(re[0]!=null&&!"".equals(re[0])){
						s.append(re[0]);
					}	
				}
			}
			s.append(".");
		};
		if(s!=null&&!"".equals(s.toString())){
			result =s.toString().substring(0,s.toString().length()-1);
		}
		return result;
	};
}
